home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / compuserve-file-archive / 08 System Utilities / DISK.BIN (.txt) < prev    next >
Commodore BASIC  |  2019-04-13  |  6KB  |  214 lines

  1. 5 POKE 49152,10:IF PEEK(49152)<>10 THEN C0=1:GOTO6:C0=2
  2. 6 DIM DOS%(65)
  3. 7 FR=FRE(0):IF FR<0 THEN FR=FR+65536
  4. 8 S=(FR-400)/2:M2=INT(S/256)+1
  5. 9 DIM TEMP%(S)
  6. 10 GOSUB1300
  7. 25 PRINT""
  8. 50 PRINTTAB(5)"[159]1. DISK DIRECTORY"
  9. 60 PRINTTAB(5)"2. FORMAT NEW DISK"
  10. 70 PRINTTAB(5)"3. INITIALIZE DISK"
  11. 80 PRINTTAB(5)"4. COPY FILE ON SAME DISK"
  12. 85 PRINTTAB(5)"5. COPY FILE ON NEW DISK"
  13. 88 PRINTTAB(5)"6. COPY BOTH DOS WEDGE PROGRAMS"
  14. 90 PRINTTAB(5)"7. RENAME FILE"
  15. 100 PRINTTAB(5)"8. ERASE FILE(S)"
  16. 110 PRINTTAB(5)"9. VALIDATE FILES"
  17. 120 PRINTTAB(4)"10. WRITE DISK MANAGER"
  18. 130 PRINTTAB(4)"11. ERROR STATUS"
  19. 140 PRINTTAB(4)"12. EXIT TO BASIC":PRINT
  20. 170 GOSUB1400
  21. 200 ON VAL(C$) GOSUB 250,300,350,400,800,1200,450,500,550,600,650,700
  22. 210 GOTO 10
  23. 250 REM***DISPLAY DIRECTORY***
  24. 251 PRINT"[147][150]"
  25. 252 OPEN 1,8,0,"$"
  26. 253 GET #1,A$,B$
  27. 254 GET#1,A$,B$
  28. 256 GET #1,A$,B$
  29. 258 C=0:IF A$<>""THEN  C=ASC(A$)
  30. 260 IF B$<>""THEN C=C+ ASC(B$)*256
  31. 262 PRINT MID$(STR$(C),2);TAB(4);
  32. 264 GET#1,B$:IF ST<>0THEN 282
  33. 266 IF B$<> CHR$(34) THEN 264
  34. 268 GET #1,B$:IF B$<> CHR$(34) THEN PRINTB$;:GOTO 268
  35. 270 GET #1,B$:IF B$=CHR$(32) THEN 270
  36. 272 PRINT TAB(22);:C$=""
  37. 274 C$=C$+B$:GET #1,B$:IF B$<>"" THEN 274
  38. 276 PRINT"[159]"LEFT$(C$,3)
  39. 280 IF ST=0 THEN 254
  40. 282 PRINT" BLOCKS FREE "
  41. 284 CLOSE 1:PRINT:PRINT:PRINT"[158]HIT ANY KEY TO RETURN"
  42. 290 GET X$:IFX$=""THEN290
  43. 295 RETURN
  44. 300 REM***FORMAT (NEW)***DISK
  45. 301 PRINT"[147][150]"
  46. 305 PRINT"INSERT DISK TO BE":PRINT"FORMATTED.":PRINT
  47. 310 PRINT"INPUT DISK NAME":INPUT DISK$
  48. 320 PRINT:PRINT"INPUT TWO CHAR. CODE":INPUT EXT$
  49. 325 MACRO$="N0:"+DISK$+","+EXT$
  50. 330 OPEN 15,8,15,MACRO$
  51. 340 CLOSE 15:MACRO$="":RETURN
  52. 350 REM***INITIALIZE DISK***
  53. 355 PRINT"[147][150]"
  54. 360 PRINT"INSERT DISK TO BE":PRINT"INITIALIZED.":PRINT
  55. 370 PRINT"HIT <RETURN> TO":PRINT"INITIALIZE":INPUT X$
  56. 380 OPEN 15,8,15,"I"
  57. 390 CLOSE 15:RETURN
  58. 400 REM***COPY FILE ON SAME DISK***
  59. 405 PRINT"[147][154]":PRINT:PRINT
  60. 410 PRINT"INPUT SOURCE FILE NAME":INPUT DISK$
  61. 420 PRINT:PRINT"INPUT NEW FILE NAME":INPUT NWS$
  62. 425 MACRO$="C:"+NWS$+"="+DISK$
  63. 430 OPEN 15,8,15,MACRO$
  64. 440 CLOSE 15:MACRO$="":RETURN
  65. 450 REM***RENAME FILE***
  66. 455 PRINT"[147][153]":PRINT
  67. 460 PRINT"INPUT OLD FILE NAME":INPUT DISK$
  68. 470 PRINT:PRINT"INPUT NEW FILE NAME":INPUT NWS$
  69. 475 MACRO$="R0:"+NWS$+"="+DISK$
  70. 480 OPEN 15,8,15,MACRO$
  71. 490 CLOSE 15:MACRO$="":RETURN
  72. 500 REM*** ERASE FILE***
  73. 505 PRINT"[147][150]":PRINT:PRINT
  74. 510 PRINT"INPUT FILE NAME(S) TO DELETE":INPUT DISK$
  75. 520 PRINT:PRINT:PRINT"HIT ANY KEY TO DELETE"
  76. 525 GET X$:IF X$="" THEN 525
  77. 530 MACRO$="S0:"+DISK$
  78. 535 OPEN 15,8,15,MACRO$
  79. 540 CLOSE 15:MACRO$="":RETURN
  80. 550 REM***VALIDATE FILES***
  81. 555 PRINT"[147][150]":PRINT:PRINT
  82. 560 PRINT"WARNING:OPEN FILES ":PRINT"WILL BE DELETED"
  83. 570 PRINT:PRINT:PRINT"HIT ANY KEY TO VALIDATE"
  84. 575 GET X$: IF X$=""THEN575
  85. 580 OPEN 1,8,15,"V"
  86. 590 CLOSE 1:RETURN
  87. 600 REM**WRITE DISKMANAGER PROGRAM**
  88. 605 PRINT"[147][154]":PRINT:PRINT
  89. 610 PRINT"INSERT DISK TO BE WRITTEN TO.":PRINT
  90. 620 PRINT:PRINT:PRINT"HIT ANY KEY TO WRITE DISK MANAGER"
  91. 622 GET X$:IF X$=""THEN 622
  92. 625 OPEN 1,8,15
  93. 630 SAVE"@0:DISKMANAGER",8
  94. 635 CLOSE 1
  95. 640 RETURN
  96. 650 REM***DISPLAY ERROR STATUS***
  97. 655 OPEN15,8,15
  98. 660 INPUT#15,A$,B$,C$,D$
  99. 670 PRINT"[147][158]":PRINT:PRINT
  100. 680 PRINT"ERROR STATUS:  "B$:PRINT:PRINT"ERROR NUMBER:  "A$
  101. 690 PRINT:PRINT:PRINT"HIT ANY KEY TO RETURN"
  102. 695 GET X$:IF X$=""THEN 695
  103. 697 CLOSE 15:RETURN
  104. 700 REM***RETURN TO BASIC OR MENU ***
  105. 705 PRINT"[147][159]"
  106. 710 PRINTTAB(7)"F1[146] - RETURN TO MAIN MENU"
  107. 715 PRINTTAB(7)"F3[146] - RETURN TO DISKMANAGER"
  108. 720 PRINTTAB(7)"F5[146] - EXIT TO BASIC"
  109. 725 GETA$:IFA$=""THEN725
  110. 727 IFA$=CHR$(133)THEN63000
  111. 728 IFA$=CHR$(134)THEN10
  112. 729 IFA$=CHR$(135)THEN735
  113. 730 GOTO725
  114. 735 POKE53280,11
  115. 737 PRINT"[147][150]* DISKMANAGER PROGRAM IS STILL RESIDENT*[146][159]"
  116. 740 END
  117. 800 REM***COPY FILE ON NEW DISK***
  118. 801 PRINT"[147][154]"
  119. 802 CLOSE 15
  120. 803 MAX=INT(S/256)
  121. 804 PRINT "  MAXIMUM SIZE OF FILE WHICH CAN BE COPIED IS"MAX" BLOCKS":PRINT
  122. 806 IF MAX>=M2 THEN GOTO 809
  123. 807 PRINT "  FOR MAXIMUM COPY SIZE OF "M2" BLOCKS,";
  124. 808 PRINT "TURN COMPUTER OFF/ON AND RELOAD PROG."
  125. 809 PRINT:PRINT"  READ/WRITE RATE IS APPROXIMATELY 6 BLOCKS/MINUTE"
  126. 810 PRINT:PRINT"INPUT NAME OF FILE TO BE COPIED"
  127. 820 INPUT FILE$
  128. 830 PRINT:PRINT"   INPUT FILE TYPE:"
  129. 840 PRINT "     P PROGRAM"
  130. 860 PRINT "     U USER"
  131. 870 PRINT "     R RELATIVE"
  132. 880 INPUT TYPE$
  133. 890 PRINT:PRINT "INSERT SOURCE DISK AND PRESS <RETURN>"
  134. 900 GET W$:IF W$=""THEN GOTO 900
  135. 910 GOSUB 1000:REM READ FILE INTO TEMP
  136. 920 PRINT:PRINT "INSERT DESTINATION DISK AND PRESS <RET>"
  137. 930 GET W$:IF W$=" " THEN GOTO 930
  138. 940 GOSUB 1050:REM WRITE FILE FROM TEMP$
  139. 950 PRINT:PRINT "MAKE ANOTHER COPY";:INPUTW$
  140. 960 IF LEFT$(W$,1)="Y" THEN GOTO 920
  141. 970 GOTO 1100
  142. 980 REM-CHECK FOR GOOD OPEN
  143. 985 INPUT#15,A$,B$,C$,D$
  144. 990 IF VAL(A$)=0 THEN RETURN
  145. 995 PRINT A$,B$,C$,D$:CLOSE 15:STOP
  146. 1000 REM - READ FILE INTO TEMP%
  147. 1002 I=1
  148. 1004 OPEN 15,8,15
  149. 1006 OPEN 5,8,5,"0:"+FILE$+","+TYPE$+",R"
  150. 1008 GOSUB 980
  151. 1009 PRINT "     NOW READING..."
  152. 1010 GET#5,A$
  153. 1012 TEMP%(I)=ASC(A$+CHR$(0))
  154. 1014 I=I+1
  155. 1016 IF ST=0 THEN 1010
  156. 1018 PRINT:PRINT "FILE=? ";FILE$,"ST=";ST,"BYTES=";I:CLOSE 5:CLOSE 15
  157. 1020 RETURN
  158. 1050 REM - WRITE FILE FROM TEMP%
  159. 1052 OPEN 15,8,15
  160. 1054 OPEN 5,8,5,"0:"+FILE$+","+TYPE$+",W"
  161. 1056 GOSUB 980
  162. 1057 PRINT "     NOW WRITING..."
  163. 1058 J=1
  164. 1060 PRINT#5,CHR$(TEMP%(J));
  165. 1062 J=J+1
  166. 1064 IF J<I THEN 1060
  167. 1066 PRINT:PRINT "FILE= ";FILE$,"BYTES=";J:CLOSE 5:CLOSE15
  168. 1068 RETURN
  169. 1100 RETURN
  170. 1200 REM***COPY BOTH DOS PROGRAMS***
  171. 1205 PRINT"[147][153]":PRINT "INSERT SOURCE DISK WITH WEDGE AND/OR DOS";
  172. 1210 PRINT"PROGRAM(S) AND PRESS <RETURN>"
  173. 1215 GET W$:IF W$=""THEN GOTO 1215
  174. 1218 TYPE$="P"
  175. 1219 IF C0=1THEN FILE$="VIC-20 WEDGE":GOTO 1235
  176. 1220 FILE$="C-64 WEDGE":GOSUB 1000
  177. 1225 FOR C=1 TO 64:DOS%(C)=TEMP%(C):NEXT C:REM MOVE C-64 WEDGE TO SMALL BUFFER
  178. 1230 FILE$="DOS 5.1"
  179. 1235 GOSUB 1000:PRINT:PRINT "INSERT DESTINATION DISK AND PRESS <RET>"
  180. 1240 GET W$:IF W$=""THENGOTO 1240
  181. 1245 GOSUB 1050:IF C0=1 THEN RETURN
  182. 1250 FOR C=1 TO 64:TEMP%(C)=DOS%(C):NEXT C
  183. 1255 FILE$="C-64 WEDGE":I=64:GOSUB 1050:REM WRITE C-64 WEDGE
  184. 1290 RETURN
  185. 1300 POKE53280,0:POKE53281,0
  186. 1302 PRINT"[147][154] [213][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][201]"
  187. 1304 PRINT" [221][158]     D I S K     M A N A G E R      [146][154][221]"
  188. 1306 FORT=1TO20
  189. 1308 PRINT"[154] [221]                                    [221]"
  190. 1310 NEXT
  191. 1311 PRINT" [221][158]    P L E A S E      S E L E C T    [146][154][221]"
  192. 1312 PRINT" [202][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][203]"
  193. 1315 RETURN
  194. 1400 T%=20:LS%=2:PRINT"[150]"
  195. 1401 GETC$:IFC$=""THEN1401
  196. 1410 IFASC(C$)<49ORASC(C$)>57THEN1401
  197. 1420 PRINTTAB(T%-1)"[145]";C$
  198. 1430 GETY$:IFY$=""THEN1430
  199. 1440 IFY$=CHR$(13)THENRETURN
  200. 1450 IFASC(Y$)=20THENPRINTTAB(T%+LEN(C$)-2)"[145] ":GOTO1490
  201. 1460 IFASC(Y$)<48ORASC(Y$)>57THEN1430
  202. 1470 IFLEN(C$)=LS%THEN1430
  203. 1480 C$=C$+Y$:PRINTTAB(T%-1)"[145]";C$:GOTO1430
  204. 1490 IFLEN(C$)=0THEN1401
  205. 1500 PRINTTAB(T%+LEN(C$)-2)"[145]":C$=LEFT$(C$,LEN(C$)-1):GOTO1430
  206. 63000 POKE53280,0:POKE53281,0
  207. 63010 PRINT"[147][144]LOAD"CHR$(34)" MENU"CHR$(34)",8"
  208. 63020 POKE636,0:POKE64,0:POKE48,8:POKE52,160
  209. 63030 POKE54,0:POKE56,160:POKE57,0:POKE58,255
  210. 63040 POKE62,0
  211. 63050 PRINT"RUN"
  212. 63060 PRINT""TAB(14)"[154]LOADING....[144]":POKE198,3
  213. 63070 POKE631,19:POKE632,13:POKE633,13:POKE59,0:POKE60,0:NEW
  214.